package proxy;

/**
 * @author ycc
 * @date 2024/4/1
 *
 * 在这个例子中，我们有一个Image接口，它表示要显示的图像。
 * RealImage类实现了Image接口，它负责从磁盘加载图像并显示。
 * ProxyImage类也实现了Image接口，但它并不直接加载和显示图像，而是通过一个RealImage对象来间接完成这些操作。
 * 当第一次调用display()方法时，它会创建一个RealImage对象并加载图像；
 * 当再次调用display()方法时，它将直接使用已经创建好的RealImage对象来显示图像。
 * 这样可以避免重复加载和显示相同的图像，从而提高程序的性能。
 */
public class Client {
    public static void main(String[] args) {
        Image image1 = new ProxyImage("test_10mb.jpg");
        Image image2 = new ProxyImage("test_100mb.jpg");

        image1.display(); // loading necessary
        image1.display(); // loading unnecessary
        image2.display(); // loading necessary
        image2.display(); // loading unnecessary
    }
}
